                                      1 ;--------------------------------------------------------
                                      2 ; File Created by SDCC : free open source ISO C Compiler 
                                      3 ; Version 4.4.0 #14620 (MINGW32)
                                      4 ;--------------------------------------------------------
                                      5 	.module ch375
                                      6 	.optsdcc -mz80
                                      7 	
                                      8 ;--------------------------------------------------------
                                      9 ; Public variables in this module
                                     10 ;--------------------------------------------------------
                                     11 	.globl _nap20
                                     12 	.globl _printf
                                     13 	.globl _ch375_read
                                     14 	.globl _ch375_write
                                     15 	.globl _ch375_probe
                                     16 	.globl _ch375_disk_capacity
                                     17 ;--------------------------------------------------------
                                     18 ; special function registers
                                     19 ;--------------------------------------------------------
                           000058    20 _ch375_data	=	0x0058
                           000059    21 _ch375_cmd	=	0x0059
                           000059    22 _ch375_status	=	0x0059
                                     23 ;--------------------------------------------------------
                                     24 ; ram data
                                     25 ;--------------------------------------------------------
                                     26 	.area _DATA
      000000                         27 _ch_ver:
      000000                         28 	.ds 1
                                     29 ;--------------------------------------------------------
                                     30 ; ram data
                                     31 ;--------------------------------------------------------
                                     32 	.area _INITIALIZED
                                     33 ;--------------------------------------------------------
                                     34 ; absolute external ram data
                                     35 ;--------------------------------------------------------
                                     36 	.area _DABS (ABS)
                                     37 ;--------------------------------------------------------
                                     38 ; global & static initialisations
                                     39 ;--------------------------------------------------------
                                     40 	.area _HOME
                                     41 	.area _GSINIT
                                     42 	.area _GSFINAL
                                     43 	.area _GSINIT
                                     44 ;--------------------------------------------------------
                                     45 ; Home
                                     46 ;--------------------------------------------------------
                                     47 	.area _HOME
                                     48 	.area _HOME
                                     49 ;--------------------------------------------------------
                                     50 ; code
                                     51 ;--------------------------------------------------------
                                     52 	.area _CODE
                                     53 ;ch375.c:47: void nap20(void)
                                     54 ;	---------------------------------
                                     55 ; Function nap20
                                     56 ; ---------------------------------
      000000                         57 _nap20::
                                     58 ;ch375.c:49: }
      000000 C9               [10]   59 	ret
                                     60 ;ch375.c:52: static BYTE ch375_rpoll(void)
                                     61 ;	---------------------------------
                                     62 ; Function ch375_rpoll
                                     63 ; ---------------------------------
      000001                         64 _ch375_rpoll:
                                     65 ;ch375.c:56: nap20();
      000001 CDr00r00         [17]   66 	call	_nap20
                                     67 ;ch375.c:57: while(--count && ((ch375_status & 0x80) == 0x80));
      000004 01 00 80         [10]   68 	ld	bc, #0x8000
      000007                         69 00102$:
      000007 0B               [ 6]   70 	dec	bc
      000008 78               [ 4]   71 	ld	a, b
      000009 B1               [ 4]   72 	or	a, c
      00000A 28 08            [12]   73 	jr	Z, 00104$
      00000C DB 59            [11]   74 	in	a, (_ch375_status)
      00000E E6 80            [ 7]   75 	and	a, #0x80
      000010 D6 80            [ 7]   76 	sub	a, #0x80
      000012 28 F3            [12]   77 	jr	Z, 00102$
      000014                         78 00104$:
                                     79 ;ch375.c:58: if (count == 0) {
      000014 78               [ 4]   80 	ld	a, b
      000015 B1               [ 4]   81 	or	a, c
      000016 20 03            [12]   82 	jr	NZ, 00106$
                                     83 ;ch375.c:59: return 0xFF;
      000018 3E FF            [ 7]   84 	ld	a, #0xff
      00001A C9               [10]   85 	ret
      00001B                         86 00106$:
                                     87 ;ch375.c:62: ch375_cmd = CMD_GET_STATUS;
      00001B 3E 22            [ 7]   88 	ld	a, #0x22
      00001D D3 59            [11]   89 	out	(_ch375_cmd), a
                                     90 ;ch375.c:63: nap20();
      00001F CDr00r00         [17]   91 	call	_nap20
                                     92 ;ch375.c:64: r = ch375_data;
      000022 DB 58            [11]   93 	in	a, (_ch375_data)
                                     94 ;ch375.c:65: return r;
                                     95 ;ch375.c:66: }
      000024 C9               [10]   96 	ret
                                     97 ;ch375.c:69: DRESULT ch375_read( BYTE *dptr, LBA_t sector, UINT count )
                                     98 ;	---------------------------------
                                     99 ; Function ch375_read
                                    100 ; ---------------------------------
      000025                        101 _ch375_read::
      000025 DD E5            [15]  102 	push	ix
      000027 DD 21 00 00      [14]  103 	ld	ix,#0
      00002B DD 39            [15]  104 	add	ix,sp
      00002D 3B               [ 6]  105 	dec	sp
      00002E EB               [ 4]  106 	ex	de, hl
                                    107 ;ch375.c:75: if( count > 255 )
      00002F 3E FF            [ 7]  108 	ld	a, #0xff
      000031 DD BE 08         [19]  109 	cp	a, 8 (ix)
      000034 3E 00            [ 7]  110 	ld	a, #0x00
      000036 DD 9E 09         [19]  111 	sbc	a, 9 (ix)
      000039 30 1C            [12]  112 	jr	NC, 00102$
                                    113 ;ch375.c:77: printf("\n ** PROBLEM **");
      00003B 21rD2r00         [10]  114 	ld	hl, #___str_0
      00003E E5               [11]  115 	push	hl
      00003F CDr00r00         [17]  116 	call	_printf
      000042 F1               [10]  117 	pop	af
                                    118 ;ch375.c:78: printf("\nNumber of sectors = %u > 255", count);
      000043 DD 6E 08         [19]  119 	ld	l, 8 (ix)
                                    120 ;	spillPairReg hl
                                    121 ;	spillPairReg hl
      000046 DD 66 09         [19]  122 	ld	h, 9 (ix)
                                    123 ;	spillPairReg hl
                                    124 ;	spillPairReg hl
      000049 E5               [11]  125 	push	hl
      00004A 21rE2r00         [10]  126 	ld	hl, #___str_1
      00004D E5               [11]  127 	push	hl
      00004E CDr00r00         [17]  128 	call	_printf
      000051 F1               [10]  129 	pop	af
      000052 F1               [10]  130 	pop	af
                                    131 ;ch375.c:79: return RES_ERROR;
      000053 3E 01            [ 7]  132 	ld	a, #0x01
      000055 18 73            [12]  133 	jr	00118$
      000057                        134 00102$:
                                    135 ;ch375.c:82: ch375_cmd = CMD_DISK_READ;
      000057 3E 54            [ 7]  136 	ld	a, #0x54
      000059 D3 59            [11]  137 	out	(_ch375_cmd), a
                                    138 ;ch375.c:84: ch375_data = sector;
      00005B DD 7E 04         [19]  139 	ld	a, 4 (ix)
      00005E D3 58            [11]  140 	out	(_ch375_data), a
                                    141 ;ch375.c:85: ch375_data = sector >> 8;
      000060 DD 7E 05         [19]  142 	ld	a, 5 (ix)
      000063 D3 58            [11]  143 	out	(_ch375_data), a
                                    144 ;ch375.c:86: ch375_data = sector >> 16;
      000065 DD 7E 06         [19]  145 	ld	a, 6 (ix)
      000068 D3 58            [11]  146 	out	(_ch375_data), a
                                    147 ;ch375.c:87: ch375_data = sector >> 24;
      00006A DD 7E 07         [19]  148 	ld	a, 7 (ix)
      00006D D3 58            [11]  149 	out	(_ch375_data), a
                                    150 ;ch375.c:88: ch375_cmd = count; // number of sectors
      00006F DD 7E 08         [19]  151 	ld	a, 8 (ix)
      000072 D3 59            [11]  152 	out	(_ch375_cmd), a
                                    153 ;ch375.c:89: while(count--)
      000074 DD 4E 08         [19]  154 	ld	c, 8 (ix)
      000077 DD 46 09         [19]  155 	ld	b, 9 (ix)
      00007A                        156 00111$:
      00007A 79               [ 4]  157 	ld	a, c
      00007B 68               [ 4]  158 	ld	l, b
                                    159 ;	spillPairReg hl
                                    160 ;	spillPairReg hl
      00007C 0B               [ 6]  161 	dec	bc
      00007D B5               [ 4]  162 	or	a, l
      00007E 28 40            [12]  163 	jr	Z, 00113$
                                    164 ;ch375.c:91: for (n = 0; n < 8; n++) {
      000080 DD 36 FF 00      [19]  165 	ld	-1 (ix), #0x00
      000084                        166 00116$:
                                    167 ;ch375.c:92: r = ch375_rpoll();
      000084 C5               [11]  168 	push	bc
      000085 D5               [11]  169 	push	de
      000086 CDr01r00         [17]  170 	call	_ch375_rpoll
      000089 D1               [10]  171 	pop	de
      00008A C1               [10]  172 	pop	bc
                                    173 ;ch375.c:94: if (r != ANSW_USB_INT_DISK_READ)
      00008B D6 1D            [ 7]  174 	sub	a, #0x1d
      00008D 28 04            [12]  175 	jr	Z, 00104$
                                    176 ;ch375.c:95: return RES_ERROR;
      00008F 3E 01            [ 7]  177 	ld	a, #0x01
      000091 18 37            [12]  178 	jr	00118$
      000093                        179 00104$:
                                    180 ;ch375.c:96: ch375_cmd = CMD_RD_USB_DATA0;
      000093 3E 27            [ 7]  181 	ld	a, #0x27
      000095 D3 59            [11]  182 	out	(_ch375_cmd), a
                                    183 ;ch375.c:97: r = ch375_data;	/* Throw byte count away - always 64 */
      000097 DB 58            [11]  184 	in	a, (_ch375_data)
                                    185 ;ch375.c:98: if (r != 64) {
      000099 D6 40            [ 7]  186 	sub	a, #0x40
      00009B 28 04            [12]  187 	jr	Z, 00125$
                                    188 ;ch375.c:99: return RES_ERROR;
      00009D 3E 01            [ 7]  189 	ld	a, #0x01
      00009F 18 29            [12]  190 	jr	00118$
                                    191 ;ch375.c:101: while( i--)
      0000A1                        192 00125$:
      0000A1 EB               [ 4]  193 	ex	de, hl
      0000A2 1E 40            [ 7]  194 	ld	e, #0x40
      0000A4                        195 00107$:
      0000A4 7B               [ 4]  196 	ld	a, e
      0000A5 1D               [ 4]  197 	dec	e
      0000A6 B7               [ 4]  198 	or	a, a
      0000A7 28 06            [12]  199 	jr	Z, 00130$
                                    200 ;ch375.c:102: *dptr++ = ch375_data;
      0000A9 DB 58            [11]  201 	in	a, (_ch375_data)
      0000AB 77               [ 7]  202 	ld	(hl), a
      0000AC 23               [ 6]  203 	inc	hl
      0000AD 18 F5            [12]  204 	jr	00107$
      0000AF                        205 00130$:
      0000AF EB               [ 4]  206 	ex	de, hl
                                    207 ;ch375.c:103: ch375_cmd = CMD_DISK_READ_GO;
      0000B0 3E 55            [ 7]  208 	ld	a, #0x55
      0000B2 D3 59            [11]  209 	out	(_ch375_cmd), a
                                    210 ;ch375.c:91: for (n = 0; n < 8; n++) {
      0000B4 DD 34 FF         [23]  211 	inc	-1 (ix)
      0000B7 DD 7E FF         [19]  212 	ld	a, -1 (ix)
      0000BA D6 08            [ 7]  213 	sub	a, #0x08
      0000BC 38 C6            [12]  214 	jr	C, 00116$
      0000BE 18 BA            [12]  215 	jr	00111$
      0000C0                        216 00113$:
                                    217 ;ch375.c:106: r = ch375_rpoll();
      0000C0 CDr01r00         [17]  218 	call	_ch375_rpoll
                                    219 ;ch375.c:107: if (r != ANSW_USB_INT_SUCCESS) {
      0000C3 D6 14            [ 7]  220 	sub	a, #0x14
                                    221 ;ch375.c:108: return RES_ERROR;
                                    222 ;ch375.c:110: return RES_OK;        
      0000C5 3E 01            [ 7]  223 	ld	a, #0x01
      0000C7 20 01            [12]  224 	jr	NZ, 00118$
      0000C9 AF               [ 4]  225 	xor	a, a
      0000CA                        226 00118$:
                                    227 ;ch375.c:111: }
      0000CA 33               [ 6]  228 	inc	sp
      0000CB DD E1            [14]  229 	pop	ix
      0000CD E1               [10]  230 	pop	hl
      0000CE C1               [10]  231 	pop	bc
      0000CF C1               [10]  232 	pop	bc
      0000D0 C1               [10]  233 	pop	bc
      0000D1 E9               [ 4]  234 	jp	(hl)
      0000D2                        235 ___str_0:
      0000D2 0A                     236 	.db 0x0a
      0000D3 20 2A 2A 20 50 52 4F   237 	.ascii " ** PROBLEM **"
             42 4C 45 4D 20 2A 2A
      0000E1 00                     238 	.db 0x00
      0000E2                        239 ___str_1:
      0000E2 0A                     240 	.db 0x0a
      0000E3 4E 75 6D 62 65 72 20   241 	.ascii "Number of sectors = %u > 255"
             6F 66 20 73 65 63 74
             6F 72 73 20 3D 20 25
             75 20 3E 20 32 35 35
      0000FF 00                     242 	.db 0x00
                                    243 ;ch375.c:114: DRESULT ch375_write( const BYTE *dptr, LBA_t sector, UINT count )
                                    244 ;	---------------------------------
                                    245 ; Function ch375_write
                                    246 ; ---------------------------------
      000100                        247 _ch375_write::
      000100 DD E5            [15]  248 	push	ix
      000102 DD 21 00 00      [14]  249 	ld	ix,#0
      000106 DD 39            [15]  250 	add	ix,sp
      000108 3B               [ 6]  251 	dec	sp
      000109 EB               [ 4]  252 	ex	de, hl
                                    253 ;ch375.c:120: if( count > 255 )
      00010A 3E FF            [ 7]  254 	ld	a, #0xff
      00010C DD BE 08         [19]  255 	cp	a, 8 (ix)
      00010F 3E 00            [ 7]  256 	ld	a, #0x00
      000111 DD 9E 09         [19]  257 	sbc	a, 9 (ix)
      000114 30 1C            [12]  258 	jr	NC, 00102$
                                    259 ;ch375.c:122: printf("\n ** PROBLEM **");
      000116 21rA8r01         [10]  260 	ld	hl, #___str_2
      000119 E5               [11]  261 	push	hl
      00011A CDr00r00         [17]  262 	call	_printf
      00011D F1               [10]  263 	pop	af
                                    264 ;ch375.c:123: printf("\nNumber of sectors = %u > 255", count);
      00011E DD 6E 08         [19]  265 	ld	l, 8 (ix)
                                    266 ;	spillPairReg hl
                                    267 ;	spillPairReg hl
      000121 DD 66 09         [19]  268 	ld	h, 9 (ix)
                                    269 ;	spillPairReg hl
                                    270 ;	spillPairReg hl
      000124 E5               [11]  271 	push	hl
      000125 21rB8r01         [10]  272 	ld	hl, #___str_3
      000128 E5               [11]  273 	push	hl
      000129 CDr00r00         [17]  274 	call	_printf
      00012C F1               [10]  275 	pop	af
      00012D F1               [10]  276 	pop	af
                                    277 ;ch375.c:124: return RES_ERROR;
      00012E 3E 01            [ 7]  278 	ld	a, #0x01
      000130 18 6E            [12]  279 	jr	00116$
      000132                        280 00102$:
                                    281 ;ch375.c:126: ch375_cmd = CMD_DISK_WRITE;
      000132 3E 56            [ 7]  282 	ld	a, #0x56
      000134 D3 59            [11]  283 	out	(_ch375_cmd), a
                                    284 ;ch375.c:127: ch375_data = sector;
      000136 DD 7E 04         [19]  285 	ld	a, 4 (ix)
      000139 D3 58            [11]  286 	out	(_ch375_data), a
                                    287 ;ch375.c:128: ch375_data = sector >> 8;
      00013B DD 7E 05         [19]  288 	ld	a, 5 (ix)
      00013E D3 58            [11]  289 	out	(_ch375_data), a
                                    290 ;ch375.c:129: ch375_data = sector >> 16;
      000140 DD 7E 06         [19]  291 	ld	a, 6 (ix)
      000143 D3 58            [11]  292 	out	(_ch375_data), a
                                    293 ;ch375.c:130: ch375_data = sector >> 24;
      000145 DD 7E 07         [19]  294 	ld	a, 7 (ix)
      000148 D3 58            [11]  295 	out	(_ch375_data), a
                                    296 ;ch375.c:131: ch375_cmd = count; // number of sectors
      00014A DD 7E 08         [19]  297 	ld	a, 8 (ix)
      00014D D3 59            [11]  298 	out	(_ch375_cmd), a
                                    299 ;ch375.c:132: while(count--)
      00014F DD 4E 08         [19]  300 	ld	c, 8 (ix)
      000152 DD 46 09         [19]  301 	ld	b, 9 (ix)
      000155                        302 00109$:
      000155 79               [ 4]  303 	ld	a, c
      000156 68               [ 4]  304 	ld	l, b
                                    305 ;	spillPairReg hl
                                    306 ;	spillPairReg hl
      000157 0B               [ 6]  307 	dec	bc
      000158 B5               [ 4]  308 	or	a, l
      000159 28 3B            [12]  309 	jr	Z, 00111$
                                    310 ;ch375.c:134: for (n = 0; n < 8; n++) {
      00015B DD 36 FF 00      [19]  311 	ld	-1 (ix), #0x00
      00015F                        312 00114$:
                                    313 ;ch375.c:135: r = ch375_rpoll();
      00015F C5               [11]  314 	push	bc
      000160 D5               [11]  315 	push	de
      000161 CDr01r00         [17]  316 	call	_ch375_rpoll
      000164 D1               [10]  317 	pop	de
      000165 C1               [10]  318 	pop	bc
                                    319 ;ch375.c:137: if (r != ANSW_USB_INT_DISK_WRITE)
      000166 D6 1E            [ 7]  320 	sub	a, #0x1e
      000168 28 04            [12]  321 	jr	Z, 00104$
                                    322 ;ch375.c:138: return RES_ERROR;
      00016A 3E 01            [ 7]  323 	ld	a, #0x01
      00016C 18 32            [12]  324 	jr	00116$
      00016E                        325 00104$:
                                    326 ;ch375.c:139: ch375_cmd = CMD_WR_USB_DATA;
      00016E 3E 2C            [ 7]  327 	ld	a, #0x2c
      000170 D3 59            [11]  328 	out	(_ch375_cmd), a
                                    329 ;ch375.c:140: ch375_data = 0x40;	/* Send write count (64)*/
      000172 3E 40            [ 7]  330 	ld	a, #0x40
      000174 D3 58            [11]  331 	out	(_ch375_data), a
                                    332 ;ch375.c:141: while( i--)
      000176 3E 40            [ 7]  333 	ld	a, #0x40
      000178                        334 00105$:
      000178 6F               [ 4]  335 	ld	l, a
                                    336 ;	spillPairReg hl
                                    337 ;	spillPairReg hl
      000179 3D               [ 4]  338 	dec	a
      00017A 2C               [ 4]  339 	inc	l
      00017B 2D               [ 4]  340 	dec	l
      00017C 28 08            [12]  341 	jr	Z, 00127$
                                    342 ;ch375.c:142: ch375_data = *dptr++;
      00017E F5               [11]  343 	push	af
      00017F 1A               [ 7]  344 	ld	a, (de)
      000180 D3 58            [11]  345 	out	(_ch375_data), a
      000182 F1               [10]  346 	pop	af
      000183 13               [ 6]  347 	inc	de
      000184 18 F2            [12]  348 	jr	00105$
      000186                        349 00127$:
                                    350 ;ch375.c:143: ch375_cmd =  CMD_DISK_WRITE_GO;
      000186 3E 57            [ 7]  351 	ld	a, #0x57
      000188 D3 59            [11]  352 	out	(_ch375_cmd), a
                                    353 ;ch375.c:134: for (n = 0; n < 8; n++) {
      00018A DD 34 FF         [23]  354 	inc	-1 (ix)
      00018D DD 7E FF         [19]  355 	ld	a, -1 (ix)
      000190 D6 08            [ 7]  356 	sub	a, #0x08
      000192 38 CB            [12]  357 	jr	C, 00114$
      000194 18 BF            [12]  358 	jr	00109$
      000196                        359 00111$:
                                    360 ;ch375.c:146: r = ch375_rpoll();
      000196 CDr01r00         [17]  361 	call	_ch375_rpoll
                                    362 ;ch375.c:147: if (r != ANSW_USB_INT_SUCCESS) {
      000199 D6 14            [ 7]  363 	sub	a, #0x14
                                    364 ;ch375.c:148: return RES_ERROR;
                                    365 ;ch375.c:150: return RES_OK;        
      00019B 3E 01            [ 7]  366 	ld	a, #0x01
      00019D 20 01            [12]  367 	jr	NZ, 00116$
      00019F AF               [ 4]  368 	xor	a, a
      0001A0                        369 00116$:
                                    370 ;ch375.c:151: }
      0001A0 33               [ 6]  371 	inc	sp
      0001A1 DD E1            [14]  372 	pop	ix
      0001A3 E1               [10]  373 	pop	hl
      0001A4 C1               [10]  374 	pop	bc
      0001A5 C1               [10]  375 	pop	bc
      0001A6 C1               [10]  376 	pop	bc
      0001A7 E9               [ 4]  377 	jp	(hl)
      0001A8                        378 ___str_2:
      0001A8 0A                     379 	.db 0x0a
      0001A9 20 2A 2A 20 50 52 4F   380 	.ascii " ** PROBLEM **"
             42 4C 45 4D 20 2A 2A
      0001B7 00                     381 	.db 0x00
      0001B8                        382 ___str_3:
      0001B8 0A                     383 	.db 0x0a
      0001B9 4E 75 6D 62 65 72 20   384 	.ascii "Number of sectors = %u > 255"
             6F 66 20 73 65 63 74
             6F 72 73 20 3D 20 25
             75 20 3E 20 32 35 35
      0001D5 00                     385 	.db 0x00
                                    386 ;ch375.c:153: DSTATUS ch375_probe(void)
                                    387 ;	---------------------------------
                                    388 ; Function ch375_probe
                                    389 ; ---------------------------------
      0001D6                        390 _ch375_probe::
                                    391 ;ch375.c:159: ch375_cmd = CMD_CHECK_EXIST;
      0001D6 3E 06            [ 7]  392 	ld	a, #0x06
      0001D8 D3 59            [11]  393 	out	(_ch375_cmd), a
                                    394 ;ch375.c:160: ch375_data = 0x55;
      0001DA 3E 55            [ 7]  395 	ld	a, #0x55
      0001DC D3 58            [11]  396 	out	(_ch375_data), a
                                    397 ;ch375.c:161: if (ch375_data != 0xAA) {
      0001DE DB 58            [11]  398 	in	a, (_ch375_data)
      0001E0 D6 AA            [ 7]  399 	sub	a, #0xaa
      0001E2 28 03            [12]  400 	jr	Z, 00102$
                                    401 ;ch375.c:162: return STA_NODISK;
      0001E4 3E 02            [ 7]  402 	ld	a, #0x02
      0001E6 C9               [10]  403 	ret
      0001E7                        404 00102$:
                                    405 ;ch375.c:164: ch375_cmd = CMD_GET_IC_VER;
      0001E7 3E 01            [ 7]  406 	ld	a, #0x01
      0001E9 D3 59            [11]  407 	out	(_ch375_cmd), a
                                    408 ;ch375.c:165: ch_ver = ch375_data;
      0001EB DB 58            [11]  409 	in	a, (_ch375_data)
      0001ED 32r00r00         [13]  410 	ld	(_ch_ver+0), a
                                    411 ;ch375.c:166: if (ch_ver == 0xFF)
      0001F0 3Ar00r00         [13]  412 	ld	a, (_ch_ver+0)
      0001F3 3C               [ 4]  413 	inc	a
      0001F4 20 03            [12]  414 	jr	NZ, 00104$
                                    415 ;ch375.c:167: return STA_NODISK;
      0001F6 3E 02            [ 7]  416 	ld	a, #0x02
      0001F8 C9               [10]  417 	ret
      0001F9                        418 00104$:
                                    419 ;ch375.c:169: ch375_cmd = CMD_SET_USB_MODE;
      0001F9 3E 15            [ 7]  420 	ld	a, #0x15
      0001FB D3 59            [11]  421 	out	(_ch375_cmd), a
                                    422 ;ch375.c:170: ch375_data = MODE_HOST_1;
      0001FD 3E 07            [ 7]  423 	ld	a, #0x07
      0001FF D3 58            [11]  424 	out	(_ch375_data), a
                                    425 ;ch375.c:171: nap20();	/* 20 us */
      000201 CDr00r00         [17]  426 	call	_nap20
                                    427 ;ch375.c:172: ch375_cmd = CMD_SET_USB_MODE;
      000204 3E 15            [ 7]  428 	ld	a, #0x15
      000206 D3 59            [11]  429 	out	(_ch375_cmd), a
                                    430 ;ch375.c:173: ch375_data = MODE_HOST_2;
      000208 3E 06            [ 7]  431 	ld	a, #0x06
      00020A D3 58            [11]  432 	out	(_ch375_data), a
                                    433 ;ch375.c:181: nap20();
      00020C CDr00r00         [17]  434 	call	_nap20
                                    435 ;ch375.c:183: for (n = 0; n < 24; n++) {
      00020F 0E 00            [ 7]  436 	ld	c, #0x00
      000211                        437 00114$:
                                    438 ;ch375.c:185: ch375_cmd = CMD_DISK_INIT;
      000211 3E 51            [ 7]  439 	ld	a, #0x51
      000213 D3 59            [11]  440 	out	(_ch375_cmd), a
                                    441 ;ch375.c:187: for (i = 0; i < 10000; i++);
      000215 11 10 27         [10]  442 	ld	de, #0x2710
      000218                        443 00113$:
      000218 1B               [ 6]  444 	dec	de
      000219 7A               [ 4]  445 	ld	a, d
      00021A B3               [ 4]  446 	or	a, e
      00021B 20 FB            [12]  447 	jr	NZ, 00113$
                                    448 ;ch375.c:188: r = ch375_rpoll();
      00021D C5               [11]  449 	push	bc
      00021E CDr01r00         [17]  450 	call	_ch375_rpoll
      000221 C1               [10]  451 	pop	bc
                                    452 ;ch375.c:189: if (r == ANSW_USB_INT_SUCCESS)
      000222 D6 14            [ 7]  453 	sub	a, #0x14
      000224 3E 01            [ 7]  454 	ld	a, #0x01
      000226 28 01            [12]  455 	jr	Z, 00173$
      000228 AF               [ 4]  456 	xor	a, a
      000229                        457 00173$:
      000229 47               [ 4]  458 	ld	b, a
      00022A B7               [ 4]  459 	or	a, a
      00022B 20 0B            [12]  460 	jr	NZ, 00108$
                                    461 ;ch375.c:191: nap20();
      00022D C5               [11]  462 	push	bc
      00022E CDr00r00         [17]  463 	call	_nap20
      000231 C1               [10]  464 	pop	bc
                                    465 ;ch375.c:183: for (n = 0; n < 24; n++) {
      000232 0C               [ 4]  466 	inc	c
      000233 79               [ 4]  467 	ld	a, c
      000234 D6 18            [ 7]  468 	sub	a, #0x18
      000236 38 D9            [12]  469 	jr	C, 00114$
      000238                        470 00108$:
                                    471 ;ch375.c:193: if (r != ANSW_USB_INT_SUCCESS)
      000238 CB 40            [ 8]  472 	bit	0, b
                                    473 ;ch375.c:194: return STA_NOINIT;
                                    474 ;ch375.c:195: return 0;
      00023A 3E 01            [ 7]  475 	ld	a, #0x01
      00023C C8               [11]  476 	ret	Z
      00023D AF               [ 4]  477 	xor	a, a
                                    478 ;ch375.c:196: }
      00023E C9               [10]  479 	ret
                                    480 ;ch375.c:198: DWORD ch375_disk_capacity(void)
                                    481 ;	---------------------------------
                                    482 ; Function ch375_disk_capacity
                                    483 ; ---------------------------------
      00023F                        484 _ch375_disk_capacity::
                                    485 ;ch375.c:202: ch375_cmd = CMD_DISK_CAPACITY;
      00023F 3E 3E            [ 7]  486 	ld	a, #0x3e
      000241 D3 59            [11]  487 	out	(_ch375_cmd), a
                                    488 ;ch375.c:203: result = ch375_data;
      000243 DB 58            [11]  489 	in	a, (_ch375_data)
      000245 47               [ 4]  490 	ld	b, a
      000246 AF               [ 4]  491 	xor	a, a
                                    492 ;ch375.c:204: result = (result << 8) + ch375_data;
      000247 57               [ 4]  493 	ld	d, a
      000248 5F               [ 4]  494 	ld	e, a
      000249 AF               [ 4]  495 	xor	a, a
      00024A F5               [11]  496 	push	af
      00024B DB 58            [11]  497 	in	a, (_ch375_data)
      00024D 6F               [ 4]  498 	ld	l, a
                                    499 ;	spillPairReg hl
                                    500 ;	spillPairReg hl
      00024E F1               [10]  501 	pop	af
      00024F 26 00            [ 7]  502 	ld	h, #0x00
                                    503 ;	spillPairReg hl
                                    504 ;	spillPairReg hl
      000251 85               [ 4]  505 	add	a, l
      000252 6F               [ 4]  506 	ld	l, a
                                    507 ;	spillPairReg hl
                                    508 ;	spillPairReg hl
      000253 78               [ 4]  509 	ld	a, b
      000254 8C               [ 4]  510 	adc	a, h
      000255 67               [ 4]  511 	ld	h, a
                                    512 ;	spillPairReg hl
                                    513 ;	spillPairReg hl
      000256 30 01            [12]  514 	jr	NC, 00105$
      000258 13               [ 6]  515 	inc	de
      000259                        516 00105$:
                                    517 ;ch375.c:205: result = (result << 8) + ch375_data;
      000259 53               [ 4]  518 	ld	d, e
      00025A 5C               [ 4]  519 	ld	e, h
      00025B AF               [ 4]  520 	xor	a, a
      00025C F5               [11]  521 	push	af
      00025D DB 58            [11]  522 	in	a, (_ch375_data)
      00025F 4F               [ 4]  523 	ld	c, a
      000260 F1               [10]  524 	pop	af
      000261 06 00            [ 7]  525 	ld	b, #0x00
      000263 81               [ 4]  526 	add	a, c
      000264 4F               [ 4]  527 	ld	c, a
      000265 7D               [ 4]  528 	ld	a, l
      000266 88               [ 4]  529 	adc	a, b
      000267 47               [ 4]  530 	ld	b, a
      000268 30 01            [12]  531 	jr	NC, 00108$
      00026A 13               [ 6]  532 	inc	de
      00026B                        533 00108$:
                                    534 ;ch375.c:206: result = (result << 8) + ch375_data;
      00026B 68               [ 4]  535 	ld	l, b
                                    536 ;	spillPairReg hl
                                    537 ;	spillPairReg hl
      00026C 63               [ 4]  538 	ld	h, e
                                    539 ;	spillPairReg hl
                                    540 ;	spillPairReg hl
      00026D AF               [ 4]  541 	xor	a, a
      00026E F5               [11]  542 	push	af
      00026F DB 58            [11]  543 	in	a, (_ch375_data)
      000271 5F               [ 4]  544 	ld	e, a
      000272 F1               [10]  545 	pop	af
      000273 16 00            [ 7]  546 	ld	d, #0x00
      000275 83               [ 4]  547 	add	a, e
      000276 5F               [ 4]  548 	ld	e, a
      000277 79               [ 4]  549 	ld	a, c
      000278 8A               [ 4]  550 	adc	a, d
      000279 57               [ 4]  551 	ld	d, a
      00027A D0               [11]  552 	ret	NC
      00027B 23               [ 6]  553 	inc	hl
                                    554 ;ch375.c:207: return result;
                                    555 ;ch375.c:208: }
      00027C C9               [10]  556 	ret
                                    557 	.area _CODE
                                    558 	.area _INITIALIZER
                                    559 	.area _CABS (ABS)
